#include<stdio.h>
#include<stdlib.h>
// int* test()
// {
//     int *p=(int*)malloc(sizeof(int));
//     if(p==NULL)
//     {
//         return 0;
//     }
//     *p=10;
//     return p;
// }

// int main()
// {
//     int *p=(int*)malloc(sizeof(int));
//     if(p==NULL)
//     {
//         return 0;
//     }
//     printf("%d\n",*p);
//     free(p);
//     return 0;
// }

int main()
{
    int *p=(int*)calloc(2,sizeof(int));
    if(p==NULL)
    {
        return 0;
    }
    *p=10;
    *(p+1)=20;
    printf("%d %d\n",*p,*(p+1));
    return 0;
}

// int main()
// {
//     int *p=(int*)calloc(2,sizeof(int));
//     p[0]=1;
//     p[1]=2;
//     printf("%d %d\n",p[0],p[1]);
   
//     int *p2=(int *)realloc(p,4*sizeof(int));
    
//     printf("p:%x p2:%x\n",p,p2);
//     printf("%d %d %d %d\n",p2[0],p2[1],p2[2],p2[3]);

//     free(p2);
//     printf("%d %d %d %d\n",p2[0],p2[1],p2[2],p2[3]);
//     return p;
// }

// int main()
// {
//     int *p=(int *)malloc(10*sizeof(int));
//     if(p==NULL)
//         return 0;
//     for(int i=0;i<10;i++)
//     {
//         p[i]=i+1;
//         printf("%d ",p[i]);
//     }
//     printf("\n");

//     free(p);
//     p=NULL;
// }

void Malloc()
{
    int **p=(int **)malloc(sizeof(int *)*2);
    for(int i=0;i<2;i++)
    {
        p[i]=(int*)malloc(sizeof(int*)*3);
    }
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            p[i][j]=i*3+j+1;
            printf("%d ",p[i][j]);
        }
        printf("\n");
    }

    for(int i=0;i<2;i++)
    {
        free(p[i]);
    }
    free(p);
    p=NULL;
}

void Malloc2()
{
    int (*p)[3]=(int(*)[3])malloc(sizeof(int)*6);
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            p[i][j]=i*3+j+1;
            printf("%d ",p[i][j]);
        }
        printf("\n");
    }
    free(p);
    p=NULL;
}

// int main()
// {
//     // Malloc();
//     Malloc2();
//     return 0;
// }